﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CuaHangMayTinh.Utilities;
using CuaHangMayTinh.DataProvider;
using CuaHangMayTinh.BusinessEntities;
using CuaHangMayTinh.DataAccessLayer;
using System.Data;

namespace CuaHangMayTinh.BusinessLogicLayer
{
    public class NghiepVuManager
    {
        /// <summary>
        /// Tạo 1 đối tượng NghiepVuDA
        /// </summary>
        private static NghiepVuDA adapter = null;

        static NghiepVuManager()
        {
            if (adapter == null)
                adapter = new NghiepVuDA();
        }

        /// <summary>
        /// Hàm thêm 1 nghiệp vụ mới
        /// </summary>
        /// <param name="entity">1 NghiepVuEntity muốn thêm mới</param>
        /// <returns>0: Không thêm được</returns>
        /// <returns> #0: Thêm thành công</returns>
        public static int Insert(NghiepVuEntity entity)
        {
            try
            {
                return adapter.Insert(entity);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return 0;
            }
        }

        /// <summary>
        /// Hàm thêm 1 nghiệp vụ mới
        /// </summary>
        /// <param name="entity">1 NghiepVuEntity muốn thêm mới</param>
        /// <returns>0: Không thêm được</returns>
        /// <returns> >0: Trả về ID của nghiệp vụ</returns>
        public static int InsertGetID(NghiepVuEntity entity)
        {
            try
            {
                return adapter.InsertGetID(entity);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return 0;
            }
        }

        /// <summary>
        /// Hàm thêm 1 loại nghiệp vụ mới, nếu xảy ra lỗi sẽ được thông báo
        /// </summary>
        /// <param name="entity">Là 1 NghiepVuEntity cần được thêm mới vào CSDL</param>
        /// <param name="errormessage"> trả về chuỗi thông báo lỗi nếu xảy ra</param>
        /// <returns>0: Không thêm được</returns>
        /// <returns> #0: Thêm được</returns>
        public static int Insert(NghiepVuEntity entity, ref string errormessage)
        {
            try
            {
                return adapter.Insert(entity);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return 0;
            }
        }


        /// <summary>
        /// Hàm thêm 1 nghiệp vụ mới, nếu xảy ra lỗi sẽ được thông báo
        /// </summary>
        /// <param name="entity">Là 1 NghiepVuEntity cần được thêm mới vào CSDL</param>
        /// <param name="errormessage"> trả về chuỗi thông báo lỗi nếu xảy ra</param>
        /// <returns>0: Không thêm được</returns>
        /// <returns> >0: Trả về ID của nghiệp vụ</returns>
        public static int InsertGetID(NghiepVuEntity entity, ref string errormessage)
        {
            try
            {
                return adapter.InsertGetID(entity);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return 0;
            }
        }

        /// <summary>
        /// Hàm cập nhật 1 nghiệp vụ
        /// </summary>
        /// <param name="entity">NghiepVuEntity muốn thêm cập nhật</param>
        /// <returns>false: Không cập nhật được</returns>
        /// <returns>true: cập nhật được</returns>
        public static bool UpDate(NghiepVuEntity entity)
        {
            try
            {
                return adapter.UpDate(entity);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return false;
            }
        }

        /// <summary>
        /// Hàm cập nhật 1 nghiệp vụ, nếu xảy ra lỗi sẽ được thông báo
        /// </summary>
        /// <param name="entity">Là 1 NghiepVuEntity cần được cập nhật </param>
        /// <param name="errormessage"> trả về chuỗi thông báo lỗi nếu xảy ra</param>
        /// <returns>false: Không cập nhật được</returns>
        /// <returns>true: cập nhật được</returns>
        public static bool UpDate(NghiepVuEntity entity, ref string errormessage)
        {
            try
            {
                return adapter.UpDate(entity);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return false;
            }
        }

        /// <summary>
        /// Hàm tìm tất cả các thông tin về nghiệp vụ
        /// </summary>
        /// <returns>DataTable</returns>
        public static DataTable Find_All()
        {
            try
            {
                return adapter.Find_All();
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// Hàm tìm tất cả thông tin về nghiệp vụ, có lỗi thì trả về
        /// </summary>
        /// <param name="errormessage">Trả về chuỗi chứa lỗi</param>
        /// <returns>DataTable</returns>
        public static DataTable Find_All(ref string errormessage)
        {
            try
            {
                return adapter.Find_All();
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// Hàm Lấy thông tin về nghiệp vụ bằng tên của nghiệp vụ đó
        /// </summary>
        /// <param name="ten">Tên nghiệp vụ</param>
        /// <returns>DataTable</returns>
        public static DataTable Find_Ten(string ten)
        {
            try
            {
                return adapter.Find_Ten(ten);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// Hàm Lấy thông tin về nghiệp vụ bằng tên của nghiệp vụ đó, trả về thông báo lỗi nếu xảy ra
        /// </summary>
        /// <param name="ten">Tên nghiệp vụ</param>
        /// /// <param name="errormessage">Trả về chuỗi chứa lỗi</param>
        /// <returns>DataTable</returns>
        public static DataTable Find_Ten(string ten, ref string errormessage)
        {
            try
            {
                return adapter.Find_Ten(ten);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return null;
            }
        }

        /// <summary>
        /// hàm mã nghiệp vụ theo tên nghiệp vụ
        /// </summary>
        /// <param name="tennv">tên nghiệp vụ</param>
        /// <returns></returns>
        public static int GetID(string tennv)
        {
            try
            {
                return adapter.GetID(tennv);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return 0;
            }

        }

        /// <summary>
        /// hàm mã nghiệp vụ theo tên nghiệp vụ có thông báo lỗi
        /// </summary>
        /// <param name="tennv">tên nghiệp vụ</param>
        /// <param name="errormessage">trả về chuỗi thông báo lỗi nếu xảy ra</param>
        /// <returns></returns>
        public static int GetID(string tennv, ref string errormessage)
        {
            try
            {
                return adapter.GetID(tennv);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return 0;
            }

        }


        /// <summary>
        /// Hàm xóa 1 nghiệp vụ
        /// </summary>
        /// <param name="id">ID của nghiệp vụ muốn xóa</param>
        /// <returns>True: Xóa thành công</returns>
        /// <returns>False: Xóa thất bại</returns>
        public static bool Delete(int id)
        {
            try
            {
                return adapter.Delete(id);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return false;
            }
        }

        /// <summary>
        /// Hàm xóa 1 nghiệp vụ, trả về thông báo lỗi
        /// </summary>
        /// <param name="id">ID của nghiệp vụ muốn xóa</param>
        /// <param name="errormessage"> trả về chuỗi thông báo lỗi nếu xảy ra</param>
        /// <returns>True: Xóa thành công</returns>
        /// <returns>False: Xóa thất bại</returns>
        public static bool Delete(int id, ref string errormessage)
        {
            try
            {
                return adapter.Delete(id);
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
                Logger.Write(ex);
                return false;
            }
        }

        /// <summary>
        /// Hàm chuyển thông tin nghiệp vụ từ 1 DataTable về 1 List[NghiepVuEntity]
        /// </summary>
        /// <param name="dt">DataTable</param>
        /// <returns>List[NghiepVuEntity]</returns>
        public static List<NghiepVuEntity> ConvertToList(DataTable dt)
        {
            return adapter.ConvertToList(dt);
        }
    }
}



